package thread;

import java.util.concurrent.atomic.AtomicInteger;

//CAS 实现的 —— 原子类
//举一个使用的例子：
//比如前面的 count++ 我们使用的是 synchronized 进行加锁来完成的保证线程安全
//我们在这里使用 原子类解决这个问题
public class Demo29 {
    //使用原子类来进行代替 int
    private static AtomicInteger count = new AtomicInteger(0);
    //传参的是这个原子类的初始化
    public static void main(String[] args) throws InterruptedException {
       Thread t1 = new Thread(() -> {
           for (int i = 0; i < 50000; i++) {
               //count++
               count.getAndIncrement();

               //++count
               //count.incrementAndGet();

               //count += n;
               //count.addAndGet(n);
           }
       });
       Thread t2 = new Thread(() -> {
           for (int i = 0; i < 50000; i++) {
               count.getAndIncrement();
           }
       });

       t1.start();
       t2.start();

       t1.join();
       t2.join();

        System.out.println("count = " + count.get());
    }
}
